#include "AfficheAgence.hpp"

#include "ConstruitRepresentationAgence.hpp"

#include "VueGraphique.hpp"

#include <QtGui/QGraphicsScene>

#include <QtGui/QGraphicsTextItem>

#include <QtGui/QVBoxLayout>

// Pour debugging
#include <QtCore/QDebug>
#include <iostream>
using namespace std;

AfficheAgence::AfficheAgence( const QString& agence, const QString& mdp,
			      const QString& contenu, QWidget* parent )
  : MereUI( parent )
{
  qDebug() << "A la création, agence =" << agence << "mdp =" << mdp;
  InfosBrutes = new ConstruitRepresentationAgence( agence, mdp, contenu, this );

  connect( static_cast< ConstruitRepresentationAgence* >( InfosBrutes ),
	   SIGNAL( infosPretes() ),
	   this, SLOT( infosActualisees() ) );

  creeUI();
}

AfficheAgence::~AfficheAgence()
{}

void AfficheAgence::infosActualisees()
{
    QString nomAffiche( "Agence : " );
    nomAffiche += InfosBrutes -> infosAgencePtr() -> nom();

    if ( InfosBrutes -> infosAgencePtr() -> idSyndicat() != 0 )
    {
        nomAffiche += " du syndicat ";
        nomAffiche += InfosBrutes -> infosAgencePtr() -> syndicat();
    }
  static_cast< QGraphicsTextItem* >( Graphiques.value( "itemNomAgence" ) )
  -> setPlainText( nomAffiche );

  update();
}

void AfficheAgence::appliquerEchelle( const double &echelle )
{
//    QHashIterator< QString, QGraphicsItem* > iter( Graphiques );

//    QGraphicsTextItem * aModifier;
//    QFont police;

//    while( iter.hasNext() )
//    {
//        iter.next();
//        aModifier = dynamic_cast< QGraphicsTextItem* >( iter.value() );
//        if ( aModifier != 0 )
//        {
//            police = aModifier -> font();
//            qDebug() << "Avant : " << police . pointSizeF();
//            police . setPointSizeF( police . pointSizeF() * echelle );
//            qDebug() << "Après : " << police . pointSizeF();
//        }
//    }

    update();
}

void AfficheAgence::creeUI()
{
  // QGraphicsScene * scene = new QGraphicsScene( 0., 0., 500., 350., this );
  // Composants . insert( "QGraphicsScene", scene );
  QGraphicsItem * itemNomAgence =
    new QGraphicsTextItem( "" );
  itemNomAgence -> setPos( 5., 5. );
  itemNomAgence -> update();
  Scene -> addItem( itemNomAgence );
  Graphiques . insert( "itemNomAgence", itemNomAgence );

  // QGraphicsView *view = new QGraphicsView( scene, this );
  // Composants . insert( "QGraphicsView", view );

  QVBoxLayout * layout = new QVBoxLayout();
  layout -> addWidget( Visualisation );
  Agencements . append( layout );

  setLayout( layout );

//  connect( this, SIGNAL(echelleChangee(double)),
//           this, SLOT(appliquerEchelle(double)) );
}
